var _ = require("lodash");

// _.uniq(array)
// 数组去重

let arr = [1, 2, 2, 3, 3, 5];
let a = _.uniq(arr);
// console.log(a);

let brr = [
  { user: "fred", age: 48 },
  { user: "barney", age: 36 },
  { user: "fred", age: 40 },
  { user: "fred", age: 40 },
  { user: "barney", age: 34 },
];
// 这个方法只能适用于简单格式
let b = _.uniq(brr);
// console.log(b);

// _.uniqBy(array, [iteratee=_.identity])
// 对数组的每个数据都是用迭代器进行操作，返回一个新数据，
// 然后根据这个数据进行去重，最后保留的还是原始数组的数据
let c = _.unionBy(brr, function (o) {
  return o.age;
});
// console.log(c);

// _.uniqWith(array, [comparator])
// 使用迭代器对每个数据都和其他数据进行两两比较，根据返回的结果
// 进行数据的存留，如果返回值为真，只保留第一次为真的情况，不相同的
// 就是返回值为假的，直接保留
function test(a, b) {
  return a.user == b.user;
}
let d = _.uniqWith(brr, test);
console.log(d);

let e = _.uniqWith(brr, _.isEqual);
// console.log(e);
